package com.bcu.alumnus.service;

import com.bcu.alumnus.config.GlobalConfig;
import com.bcu.alumnus.entity.Message;
import com.bcu.alumnus.entity.Moment;
import com.bcu.alumnus.repo.MomentRepository;
import org.bouncycastle.pqc.crypto.MessageSigner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;
import java.io.File;
import java.util.Date;
import java.util.List;

@Service
@Validated
@Transactional
public class MomentService {



    private Logger logger = LoggerFactory.getLogger(getClass());

    @Resource
    private MomentRepository momentRepository;

    @Resource
    private GlobalConfig config;



    /**
     * @Author: Gzz
     * @Date: 2020/9/28 下午12:10
     * @Description: 发布精彩瞬间
     */
    public Message<Moment> addMoment(Moment moment){
        logger.info("开始 发布精彩瞬间 方法");
        moment.setMomentTime(new Date());
        moment.setMomentStatus("0");
        /**
         * 将处于临时文件夹的文件转移到业务文件夹
         String[] contentFiles=moment.getMomentContentImg().split(";");
        moment.setMomentContentImg("");
        if(moment.getMomentContentImg() != null){
            for(String fileName:contentFiles) {
                File tmpImg = new File(config.globalFilePath + "/temp/" + fileName);
                logger.info("tepImg:{}",tmpImg);
                if (tmpImg.exists()) {
                    tmpImg.renameTo(new File(config.globalFilePath + "/moment/" + fileName));
                    moment.setMomentContentImg(moment.getMomentContentImg()+"/resource/moment/" + fileName+";");
                }
            }
        }*/
        Moment momentRs = momentRepository.save(moment);
        return Message.success(null).add(momentRs);
    }


    /**
     * @Author: Gzz
     * @Date: 2020/9/28 下午12:50
     * @Description: 根据瞬间Id查找瞬间
     */
    public Message<Moment> getMomentByMomentId(int momentId){
        logger.info("开始 根据瞬间Id查找瞬间 方法");
        Moment momentRs = momentRepository.getMomentByMomentId(momentId);
        if(momentRs != null){
            return Message.success(null).add(momentRs);
        }
        return Message.fail("未查找到指定瞬间");
    }


    /**
     * @Author: Gzz
     * @Date: 2020/9/28 下午12:52
     * @Description: 根据瞬间Id删除瞬间
     */
    public Message deleteMomentByMomentId(int momentId){
        logger.info("开始 根据瞬间Id删除瞬间 方法");
        int Rs = momentRepository.deleteMomentByMomentId(momentId);
        if(Rs == 1){
            return Message.success(null);
        }
        return Message.fail(null);
    }


    /**
     * @Author: Gzz
     * @Date: 2020/9/28 下午12:58
     * @Description: 根据瞬间Id,修改瞬间状态
     */
    public Message<Moment> UpDateMomentStatusByMomentId(int momentId){
        logger.info("开始 根据瞬间Id,修改瞬间状态 方法");
        int Rs = momentRepository.UpDateMomentStatusByMomentId(momentId);
        if(Rs == 1){
            return Message.success(null).add(momentRepository.getMomentByMomentId(momentId));
        }
        return Message.fail(null);
    }

    /**
     * @Author: Gzz
     * @Date: 2020/10/8 下午8:18
     * @Description: 获取所有瞬间信息
     */
    public Message<List<Moment>> getAllMoment(){
        return Message.success(null).add(momentRepository.findAll());
    }


}
